도메인 서비스
도메인 서비스(Domain Service)란?
에그리거트(Aggregate)란 ?
에그리거트는 관련된 도메인 객체들의 그룹
도메인 서비스는 언제 사용되는가 ?
- 도메인 객체에 들어가기 부자연스러운 동작들을 해결
- 도메인 객체의 책임이 모호한 비즈니스 로직
- 여러 도메인 객체가 참여하는 비즈니스 로직
도메인 서비스와 도메인 객체의 차이
“도메인 서비스는 자신의 행동을 바꿀 수 있는 인스턴스만의 값을 갖지 않는다는 점에서 값 객체나 엔티티와 다르다” - <도메인 주도 설계 철저 입문>
- 도메인 객체는 상태를 가짐(Stateful)
- 도메인 서비스는 상태를 가지지 않음(Stateless)
도메인 서비스의 사용 예시
-
유저 중복 검사
- 새로 생성된 유저가 기존의 유저와 중복되는가?
- 단일 객체의 책임으로 보기 애매한 기능
-
계좌 이체
주의점
-
도메인 서비스의 남용 주의
- 도메인 객체의 로직들 전부 도메인 서비스에 구현 가능
- -> 로직을 빼앗긴
"빈혈 도메인 모델"
꼭 필요한 비즈니스 로직들만 도메인 서비스에 넣을 것
기타: 도메인 서비스와 애플리케이션 서비스?
기타: 도메인 서비스와 애플리케이션 서비스?
- 도메인 서비스는
비즈니스 로직을 수행
- 애플리케이션 서비스는 도메인 객체, 도메인 서비스를 조합하여
애플리케이션의 기능 수행